export module EventLoop {
    var flag = false // 1. 变量声明

    Promise.resolve().then(() => {
        // 2. 将 then 任务分发到本轮循环微任务队列中去
        console.log('then1') // 8. 执行 then 微任务， 打印 then1，flag 此时是 true 了
        flag = true
    })
    new Promise(resolve => {
        // 3. 执行 Promise 里 同步代码
        console.log('promise')
        resolve("执行同步代码");
        setTimeout(() => { // 4. 将定时器里的任务放到宏任务队列中
            console.log('timeout2') // 11. 执行定时器宏任务 这边指定了 10 的等待时长, 因此在另一个定时器任务之后执行了
        }, 10)
    }).then(function () {
        // 5. 将 then 任务分发到本轮循环微任务队列中去
        console.log('then2') // 9. 执行 then 微任务， 打印 then2，至此本轮 tick 结束
    })
    function f1(f:any) {
        // 1. 函数声明
        f()
    }
    function f2(f:any) {
        // 1. 函数声明
        setTimeout(f) //  7. 把`setTimeout`中的`f`放到宏任务队列中，等本轮`tick`执行完，下一次事件循环再执行
    }
    f1(() => console.log('f为：', flag ? '异步' : '同步')) // 6. 打印 `f为：同步`
    f2(() => {
        console.log('timeout1,', 'f为：', flag ? '异步' : '同步') // 10. 执行定时器宏任务
    })

    console.log('本轮宏任务执行完') // 7. 打印
}